// 文章模块路由器
// 引入express模块
const express = require('express')
// 引入执行SQL命令方法
const { query } = require('../db')
// 创建路由器对象
const router = express.Router()
// 添加路由
// 添加文章分类(post /category)
router.post('/category',async (req,res,next) => {
  // 获取post传递的参数
  const {cname} = req.body
  if(!cname) {
    return res.send({
      code: 401,
      msg: '文章分类不能为空'
    })
  }
  // 执行SQL命令
  try {
    var data = await query('insert into hs_category values(null,?)',[cname])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '文章分类添加成功'
  })
})
// 删除文章分类(delete /category)
router.delete('/category',async (req,res,next) => {
  // 获取get传递的参数
  const {id} = req.query
  if(!id) {
    return res.send({
      code: 401,
      msg: 'id不能为空'
    })
  }
  // 执行SQL命令
  try {
    var data = await query('delete from hs_category where cid=?',[id])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  if(data.affectedRows === 0) {
    res.send({
      code: 410,
      msg: '删除失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '删除成功'
    })
  }
})
// 修改文章分类(put /category)
router.put('/category', async (req,res,next) => {
  // 获取post传递的参数
  const {cid,cname} = req.body
  // 判断是否为空
  if(!cid) {
    return res.send({
      code: 401,
      msg: 'cid不能为空'
    })
  }
  if(!cname) {
    return res.send({
      code: 402,
      msg: 'cname不能为空'
    })
  }
  // 执行SQL命令
  try {
    var data = await query('update hs_category set cname=? where cid=?',[cname,cid])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  // 判断是否修改成功
  if(data.changedRows === 0) {
    res.send({
      code: 410,
      msg: '修改失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '修改成功'
    })
  }
})
// 文章分类列表(get /category)
router.get('/category', async (req,res,next) => {
  // 执行SQL命令
  try {
    var data = await query('select * from hs_category')
  } catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '分类列表',
    data
  })
})
// 添加文章(post /)
router.post('/', async (req,res,next) => {
  // 获取post传递的参数
  const obj = req.body
  console.log(obj)
  // 判断是否为空
  let code = 400
  for(let k in obj) {
    code++
    if(!obj[k]) {
      return res.send({
        code,
        msg: `${k}不能为空`
      })
    }
  }
  // 添加当前时间的时间戳
  obj.ctime = Date.now()
  // 执行SQL命令
  try {
    var data = await query('insert into hs_article set ?',[obj])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '新闻添加成功'
  })
})
// 修改文章(put /)
router.put('/',async (req,res,next) =>{
  // 获取post传递的参数
  const obj = req.body
  console.log(obj)
  // 验证是否为空
  let code = 400
  for(let k in obj) {
    code++
    if(!obj[k]) {
      return res.send({
        code,
        msg: `${k}不能为空`
      })
    }
  }
  // 执行SQL命令
  try {
    var data = await query('update hs_article set ? where id=?',[obj,obj.id])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  // 判断是否成功
  if(data.changedRows === 0) {
    res.send({
      code: 410,
      msg: '修改失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '修改成功'
    })
  }
})
// 删除文章(delete /)
router.delete('/',async (req,res,next) => {
  // 获取get传递的参数
  const { id } = req.query
  console.log(id)
  // 判断是否为空
  if(!id) {
    return res.send({
      code: 401,
      msg: 'id不能为空'
    })
  }
  // 执行SQL命令
  try{
    var data = await query('delete from hs_article where id=?',[id])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  if(data.affectedRows === 0) {
    res.send({
      code: 410,
      msg: '删除失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '删除成功'
    })
  }
})
// 文章列表(get /)
router.get('/', async (req,res,next) =>{
  // 获取get传递参数
  const obj = req.query
  console.log(obj)
  let page = 10
  // 声明变量，用于拼接条件
  let str = ''
  // 判断，是否两者存在
  // 是否存在编号
  // 是否存在关键字
  if(obj.cate_id && obj.title) {
    str = `where cate_id=${obj.cate_id} && title like '%${obj.title}%'`
  } else if(obj.title) {
    str = `where title like '%${obj.title}%'`
  } else if(obj.cate_id) {
    str = `where cate_id=${obj.cate_id}`
  }
  // 如果页码为空，设置默认为第1页
  if(!obj.pno) {
    obj.pno=1
  }
  // 计算开始查询的值
  let start = (obj.pno - 1) * page
  // 执行SQL命令
  try {
    var data = await query(`select * from hs_article ${str} order by id desc limit ${start},${page}; select count(*) n from hs_article ${str}`)
  } catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '新闻列表',
    data: data[0],
    total: data[1][0].n,
    pno: obj.pno
  })
})

// 暴露路由器对象
module.exports = router